package com.sharelords.demo.common.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Description: 日期相关
 * @Author: 千古龙少
 * @Time: 2019/11/25 22:39
 */
public class DateUtil {

    private static ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<>();

    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    private static final String DAY_FORMAT = "yyyy-MM-dd";

    private DateUtil() {}

    /**
     * 日期字符串格式输出，年月日时分秒
     *
     * @Author: 千古龙少
     * @Time: 2019/11/25 22:43
     * @param dateValue 时间值
     * @return java.lang.String
     */
    public static String dateFormat(Date dateValue) {
        return generalFormat(dateValue , DATE_FORMAT);
    }

    /**
     * 日期字符串格式输出，年月日
     *
     * @Author: 千古龙少
     * @Time: 2019/11/25 22:43
     * @param dateValue 时间值
     * @return java.lang.String
     */
    public static String dayFormat(Date dateValue) {
        return generalFormat(dateValue , DAY_FORMAT);
    }

    /**
     * 时间转换通用操作
     *
     * @param dateValue 时间值
     * @param pattern 模型
     * @return
     */
    private static String generalFormat(Date dateValue, String pattern) {
        String format = getDateFormat(pattern).format(dateValue);
        // 使用完毕，移除
        threadLocal.remove();
        return format;
    }

    /**
     *获取SimpleDateFormat对象
     *
     * @param pattern 模型
     * @return
     */
    private static SimpleDateFormat getDateFormat(String pattern) {
        SimpleDateFormat df = threadLocal.get();
        if(df == null){
            df = new SimpleDateFormat(pattern);
            threadLocal.set(df);
        }
        return df;
    }

}
